The development of network computing (“NC”) technology has spawned the development of several intelligent devices, ranging from simple thin-client desk-top computers, to internet-aware screen phones, mobile phones, personal digital assistants (“PDAs”), public kiosks, smart-card based banking devices, etc. The Java computer language has been an important feature of this technological development, as it provides a “Write Once, Run Anywhere” platform which is an effective way to pass an application from a server to a device for local execution on the device. Thus, Java provides the ability to transparently deliver, via a communications mechanism such as a general purpose network or a special purpose communications port, software to a variety of devices having different hardware platforms and has become a standard language for internet applications.
In order to improve functionality of intelligent devices, it can be desirable to remotely observe, configure and/or control these devices. For example, when a server is connected to download an application to a device, it can be desired to interrogate the device to determine the available resources in the device, such as whether the device has a necessary minimum amount of free memory. In addition, the ability to examine, configure and control applications and/or the device remotely can be of assistance to developers attempting to troubleshoot or debug hardware and/or software.
While Java is a useful and popular language for internet applications, conventional Java programming techniques are generally limited in their ability to remotely observe and/or control the device. For example, one known method of observing and/or controlling objects on a remote device involves also programming each object to be executed on the device to be accessible by an application executing on a server. This requires an increase in the memory required for each object, as each instantiated object has a larger memory footprint and, as a result, valuable device memory is required to hold the larger objects and this memory is required even when the remote access and control features are not being used.
Furthermore, existing Java techniques require that the server application be programmed with complementary programming can access the objects on the device. Any upgrades to device objects will generally require an accompanying upgrade of the complementary server application, which can create inconvenience and inefficiency during software development.